a11y: Add more test API
authorEmmanuele Bassi <ebassi@gnome.org>
Wed, 22 Jul 2020 15:32:09 +0000 (16:32 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Sun, 26 Jul 2020 19:49:08 +0000 (20:49 +0100)
gtk/gtktestatcontext.c
gtk/gtktestatcontext.h

index 1bae6625d8092b6afa3fe54238f03feabcf77ad1..a88b7af3fad8906504321f7c17453a62a49d3511 100644 (file)
@@ -140,14 +140,44 @@ gtk_test_accessible_has_property (GtkAccessible         *accessible,
   return gtk_at_context_has_accessible_property (context, property);
 }
 
+gboolean
+gtk_test_accessible_has_state (GtkAccessible      *accessible,
+                               GtkAccessibleState  state)
+{
+  GtkATContext *context;
+
+  g_return_val_if_fail (GTK_IS_ACCESSIBLE (accessible), FALSE);
+
+  context = gtk_accessible_get_at_context (accessible);
+  if (context == NULL)
+    return FALSE;
+
+  return gtk_at_context_has_accessible_state (context, state);
+}
+
+gboolean
+gtk_test_accessible_has_relation (GtkAccessible         *accessible,
+                                  GtkAccessibleRelation  relation)
+{
+  GtkATContext *context;
+
+  g_return_val_if_fail (GTK_IS_ACCESSIBLE (accessible), FALSE);
+
+  context = gtk_accessible_get_at_context (accessible);
+  if (context == NULL)
+    return FALSE;
+
+  return gtk_at_context_has_accessible_relation (context, relation);
+}
+
 void
-gtk_test_accessible_assertion_message_cmprole (const char        *domain,
-                                               const char        *file,
-                                               int                line,
-                                               const char        *func,
-                                               const char        *expr,
-                                               GtkAccessible     *accessible,
-                                               GtkAccessibleRole  role)
+gtk_test_accessible_assertion_message_role (const char        *domain,
+                                            const char        *file,
+                                            int                line,
+                                            const char        *func,
+                                            const char        *expr,
+                                            GtkAccessible     *accessible,
+                                            GtkAccessibleRole  role)
 {
   char *role_name = g_enum_to_string (GTK_TYPE_ACCESSIBLE_ROLE, role);
   char *s = g_strdup_printf ("%s:accessible-role == %s",
@@ -161,13 +191,13 @@ gtk_test_accessible_assertion_message_cmprole (const char        *domain,
 }
 
 void
-gtk_test_accessible_assertion_message_cmpproperty (const char            *domain,
-                                                   const char            *file,
-                                                   int                    line,
-                                                   const char            *func,
-                                                   const char            *expr,
-                                                   GtkAccessible         *accessible,
-                                                   GtkAccessibleProperty  property)
+gtk_test_accessible_assertion_message_property (const char            *domain,
+                                                const char            *file,
+                                                int                    line,
+                                                const char            *func,
+                                                const char            *expr,
+                                                GtkAccessible         *accessible,
+                                                GtkAccessibleProperty  property)
 {
   char *s = g_strdup_printf ("%s:accessible-property == %s",
                              G_OBJECT_TYPE_NAME (accessible),
@@ -177,3 +207,39 @@ gtk_test_accessible_assertion_message_cmpproperty (const char            *domain
 
   g_free (s);
 }
+
+void
+gtk_test_accessible_assertion_message_state (const char         *domain,
+                                             const char         *file,
+                                             int                 line,
+                                             const char         *func,
+                                             const char         *expr,
+                                             GtkAccessible      *accessible,
+                                             GtkAccessibleState  state)
+{
+  char *s = g_strdup_printf ("%s:accessible-state == %s",
+                             G_OBJECT_TYPE_NAME (accessible),
+                             gtk_accessible_state_get_attribute_name (state));
+
+  g_assertion_message_expr (domain, file, line, func, s);
+
+  g_free (s);
+}
+
+void
+gtk_test_accessible_assertion_message_relation (const char            *domain,
+                                                const char            *file,
+                                                int                    line,
+                                                const char            *func,
+                                                const char            *expr,
+                                                GtkAccessible         *accessible,
+                                                GtkAccessibleRelation  relation)
+{
+  char *s = g_strdup_printf ("%s:accessible-relation == %s",
+                             G_OBJECT_TYPE_NAME (accessible),
+                             gtk_accessible_relation_get_attribute_name (relation));
+
+  g_assertion_message_expr (domain, file, line, func, s);
+
+  g_free (s);
+}
index 50ab7302d582a9b81ebd1929f46186bef59ec424..1d99a7cf1f22775782eb8935dd6765ef596d343c 100644 (file)
 
 G_BEGIN_DECLS
 
-#define gtk_test_accessible_assert_cmprole(accessible,role)             G_STMT_START { \
+/**
+ * gtk_test_accessible_assert_role:
+ * @accessible: a #GtkAccessible
+ * @role: a #GtkAccessibleRole
+ *
+ * Checks whether a #GtkAccessible implementation has the given @role,
+ * and raises an assertion if the condition is failed.
+ */
+#define gtk_test_accessible_assert_role(accessible,role)                G_STMT_START { \
                                                                           GtkAccessible *__a = GTK_ACCESSIBLE (accessible); \
                                                                           GtkAccessibleRole __r = (role); \
                                                                           if (gtk_test_accessible_has_role (__a, __r)) ; else \
-                                                                            gtk_test_accessible_assertion_message_cmprole (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
-                                                                                                                           #accessible " == " #role, \
-                                                                                                                           __a, __r); \
+                                                                            gtk_test_accessible_assertion_message_role (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                                                                                        #accessible " == " #role, \
+                                                                                                                        __a, __r); \
                                                                         } G_STMT_END
-#define gtk_test_accessible_assert_cmpproperty(accessible,property)     G_STMT_START { \
+/**
+ * gtk_test_accessible_assert_property:
+ * @accessible: a #GtkAccessible
+ * @property: a #GtkAccessibleProperty
+ *
+ * Checks whether a #GtkAccessible implementation contains the
+ * given @property, and raises an assertion if the condition is
+ * failed.
+ */
+#define gtk_test_accessible_assert_property(accessible,property)        G_STMT_START { \
                                                                           GtkAccessible *__a = GTK_ACCESSIBLE (accessible); \
                                                                           GtkAccessibleProperty __p = (property); \
                                                                           if (gtk_test_accessible_has_property (__a, __p)) ; else \
-                                                                            gtk_test_accessible_assertion_message_cmpproperty (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
-                                                                                                                               #accessible " == " #property, \
-                                                                                                                               __a, __p); \
+                                                                            gtk_test_accessible_assertion_message_property (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                                                                                            #accessible " has " #property, \
+                                                                                                                            __a, __p); \
+                                                                        } G_STMT_END
+/**
+ * gtk_test_accessible_assert_relation:
+ * @accessible: a #GtkAccessible
+ * @relation: a #GtkAccessibleRelation
+ *
+ * Checks whether a #GtkAccessible implementation contains the
+ * given @relation, and raises an assertion if the condition is
+ * failed.
+ */
+#define gtk_test_accessible_assert_relation(accessible,relation)        G_STMT_START { \
+                                                                          GtkAccessible *__a = GTK_ACCESSIBLE (accessible); \
+                                                                          GtkAccessibleRelation __r = (relation); \
+                                                                          if (gtk_test_accessible_has_relation (__a, __r)) ; else \
+                                                                            gtk_test_accessible_assertion_message_relation (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                                                                                            #accessible " has " #relation, \
+                                                                                                                            __a, __r); \
+                                                                        } G_STMT_END
+/**
+ * gtk_test_accessible_assert_state:
+ * @accessible: a #GtkAccessible
+ * @state: a #GtkAccessibleState
+ *
+ * Checks whether a #GtkAccessible implementation contains the
+ * given @state, and raises an assertion if the condition is
+ * failed.
+ */
+#define gtk_test_accessible_assert_state(accessible,state)              G_STMT_START { \
+                                                                          GtkAccessible *__a = GTK_ACCESSIBLE (accessible); \
+                                                                          GtkAccessibleState __s = (state); \
+                                                                          if (gtk_test_accessible_has_state (__a, __s)) ; else \
+                                                                            gtk_test_accessible_assertion_message_state (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                                                                                         #accessible " has " #state, \
+                                                                                                                         __a, __s); \
                                                                         } G_STMT_END
 
 GDK_AVAILABLE_IN_ALL
@@ -51,23 +102,44 @@ gboolean        gtk_test_accessible_has_role            (GtkAccessible         *
 GDK_AVAILABLE_IN_ALL
 gboolean        gtk_test_accessible_has_property        (GtkAccessible         *accessible,
                                                          GtkAccessibleProperty  property);
-
 GDK_AVAILABLE_IN_ALL
-void    gtk_test_accessible_assertion_message_cmprole           (const char        *domain,
-                                                                 const char        *file,
-                                                                 int                line,
-                                                                 const char        *func,
-                                                                 const char        *expr,
-                                                                 GtkAccessible     *accessible,
-                                                                 GtkAccessibleRole  role) G_GNUC_NORETURN;
+gboolean        gtk_test_accessible_has_relation        (GtkAccessible         *accessible,
+                                                         GtkAccessibleRelation  relation);
 GDK_AVAILABLE_IN_ALL
-void    gtk_test_accessible_assertion_message_cmpproperty       (const char            *domain,
-                                                                 const char            *file,
-                                                                 int                    line,
-                                                                 const char            *func,
-                                                                 const char            *expr,
-                                                                 GtkAccessible         *accessible,
-                                                                 GtkAccessibleProperty  property) G_GNUC_NORETURN;
+gboolean        gtk_test_accessible_has_state           (GtkAccessible         *accessible,
+                                                         GtkAccessibleState     state);
 
+GDK_AVAILABLE_IN_ALL
+void    gtk_test_accessible_assertion_message_role      (const char        *domain,
+                                                         const char        *file,
+                                                         int                line,
+                                                         const char        *func,
+                                                         const char        *expr,
+                                                         GtkAccessible     *accessible,
+                                                         GtkAccessibleRole  role) G_GNUC_NORETURN;
+GDK_AVAILABLE_IN_ALL
+void    gtk_test_accessible_assertion_message_property  (const char            *domain,
+                                                         const char            *file,
+                                                         int                    line,
+                                                         const char            *func,
+                                                         const char            *expr,
+                                                         GtkAccessible         *accessible,
+                                                         GtkAccessibleProperty  property) G_GNUC_NORETURN;
+GDK_AVAILABLE_IN_ALL
+void    gtk_test_accessible_assertion_message_relation  (const char            *domain,
+                                                         const char            *file,
+                                                         int                    line,
+                                                         const char            *func,
+                                                         const char            *expr,
+                                                         GtkAccessible         *accessible,
+                                                         GtkAccessibleRelation  relation) G_GNUC_NORETURN;
+GDK_AVAILABLE_IN_ALL
+void    gtk_test_accessible_assertion_message_state     (const char            *domain,
+                                                         const char            *file,
+                                                         int                    line,
+                                                         const char            *func,
+                                                         const char            *expr,
+                                                         GtkAccessible         *accessible,
+                                                         GtkAccessibleState     state) G_GNUC_NORETURN;
 
 G_END_DECLS